System and method for portal rendering

ABSTRACT

A system and method for rendering a portal, comprising rendering a portal containing a portal page with a first Java Server Page (JSP); rendering the portal page containing a portlet with a second JSP; rendering the portlet containing a portlet element with a third JSP; and rendering the portlet element with a fourth JSP.

CLAIM OF PRIORITY

[0001] This application claims priority from ENHANCED PORTALS [FLAGSTAFFRELEASE], U.S. Provisional Application No. 60/386,487, Inventors: PhilGriffin, et al., filed on Oct. 24, 2001, and which is incorporatedherein by reference.

CROSS REFERENCES

[0002] This application is related to the following co-pendingapplications which are each hereby incorporated by reference in theirentirety: SYSTEM AND METHOD FOR PORTAL PAGE LAYOUT, Inventors: PhilGriffin, et al., filed on ______; SYSTEM AND METHOD FOR DELEGATED SYSTEMADMINISTRATION, U.S. application Ser. No.______, Inventors: PhilGriffin, et al., filed on______; SYSTEM AND METHOD FOR RULE-BASEDENTITLEMENTS, U.S. application Ser. No.______, Inventors: Phil Griffin,et al., filed on______.

FIELD OF THE DISCLOSURE

[0003] The present invention disclosure relates to portal rendering.

BACKGROUND

[0004] A portal is a point of access to data and applications thatprovides a unified and personalized view of information and resources.Typically, a portal is implemented as one or more pages on a website.Portal pages can integrate many elements, such as live data feeds,static information and multimedia presentations. However, if thesoftware required for rendering each element on a portal page iscomplex, maintenance problems can arise. For example, a web page thatcontains text and graphics is coded in at least two programminglanguages, often intermingled within the same file used to describe theweb page. Implementing even minor changes requires a great deal of skilland knowledge. What is needed is a more modular approach to portalrendering that permits users of average skill to create and modifyportal pages with minimal effort.

BRIEF DESCRIPTION OF THE DRAWINGS

[0005]FIG. 1 is an illustration of an exemplary portal in accordance toone embodiment of the invention.

[0006]FIG. 2 is diagram of a system in accordance to one embodiment ofthe invention.

[0007]FIG. 3 is diagram of portal rendering in accordance to oneembodiment of the invention.

[0008]FIG. 4 is diagram of portlet rendering in accordance to oneembodiment of the invention.

DETAILED DESCRIPTION

[0009] The invention is illustrated by way of example and not by way oflimitation in the figures of the accompanying drawings in which likereferences indicate similar elements. It should be noted that referencesto “an” or “one” embodiment in this disclosure are not necessarily tothe same embodiment, and such references mean at least one.

[0010]FIG. 1 is an illustration of an exemplary portal in accordance toone embodiment of the invention. In one embodiment, by way of example,portal 16 is rendered upon display area 12, which can be a region in thedisplay area of a device (e.g., a computer monitor). In a furtherembodiment, a portal can be rendered as one or more pages available onthe World Wide Web. Such pages can be implemented using Hypertext MarkupLanguage (HTML), or other programming language, so as to be render-ableby a commercial web browser. One such browser is Microsoft InternetExplorer, available from Microsoft, Corp. of Redmond, Wash.

[0011] Portal 16 contains several elements. Portal page selection tabs20-28 can each be selected by a user to render a different page withinthe portal. Portal pages can be thought of as panels or panes that areswapped into and out of a display region of the available portal realestate. If tab 20 were selected, for example, the portal pagecorresponding to that tab would be rendered. By way of a non limitingexample, selection of a portal element can be accomplished with an inputdevice such as a mouse, a motion detector, a voice command, a hand oreye gesture, etc. Although tabs 20-28 in FIG. 1 are displayedhorizontally, in another embodiment the tabs could be displayedvertically or using some other scheme. In yet another embodiment, tabs20-28 could be rendered as buttons or as other kinds of interactivecontrols.

[0012] Portal 16 is also contains portal page 10, which includesportlets and other elements. A portlet is an application that can manageits own graphical user interface (GUI). Portlets can communicate witheach other and with other software and hardware components (e.g.,Enterprise Java Beans™, Java™ Beans, servlets, applets, etc.). The Java™programming language, its libraries, environment and toolkits areavailable from Sun Microsystems, Inc. of Santa Clara, Calif. The othersoftware and hardware components may be part of the same executionenvironment as the portlet or may be in a different executionenvironment. In one embodiment, a portlet is implemented as a JavaServerPage™ (JSP). JSP's are part of the Java™ standard available from SunMicrosystems, Inc. For example, portlet 30 displays real-time stockticker information. A user might be able to configure such a portlet todisplay certain stocks of interest. In another embodiment, the user canselect a given stock displayed in portlet 30 and receive more detailedinformation, such as the price history, price to earnings ratio, etc.The portlet would be responsible for handling user input and respondingaccordingly. Portlet GUI 32, for example, displays up-to-dateinformation pertaining to a user's checking accounts. Likewise, portlet32 could provide detailed information on transactions if the user wereto select an account. Advertisement portlet 18 displays an advertisementthat could be directed specifically to the current user based ondemographics or other information. For instance, if a user had anoutstanding home loan in good standing, the advertisement could be for ahome equity loan. Likewise, if the user had an appropriate amount in asavings account, the advertisement could be for a new car loan. Staticarea 14 contains non-interactive content, such as text, an image or anycombination thereof.

[0013] In one embodiment, a portal page such as 10 can be described witha layout (hereinafter referred to as a “template”). A template canspecify the location of elements on a portal page. A template caninclude one or more placeholders which define regions of the templatewherein a portlet can render itself, or wherein other static or dynamiccontent can be rendered. A given placeholder can host more than oneportlet. In such a case, the template area occupied by the placeholdercould be shared amongst the portlets in a number of ways, including butnot limited to stacking portlets on top of one another (not shown). Inanother embodiment, a template can be implemented as a Hypertext MarkupLanguage (HTML) table and created with conventional HTML editors. Eachcell in a such a table can represent a placeholder. Placeholders can bedynamically bound to portlet GUI's during portal page rendering. In oneembodiment, this can be accomplished by inserting directives to initiateportlet execution, such as JSP tag library calls, in the HTML tablecells representing placeholders.

[0014]FIG. 2 is diagram of a system in accordance to one embodiment ofthe invention. Although this diagram depicts objects as functionallyseparate, such depiction is merely for illustrative purposes. It will beapparent to those skilled in the art that the objects portrayed in FIG.2 can be arbitrarily combined or divided into separate software,firmware or hardware components. Furthermore, it will also be apparentto those skilled in the art that such objects, irregardless of how theyare combined or divided, can execute on the same computer or can bearbitrarily distributed among different computers connected by anetwork.

[0015] In one embodiment, by way of illustration, client 200 can rendera portal by delegating the work to a hierarchy of JSP's wherein one JSPrenders parts of its GUI by invoking other JSP's. Client 200 can be aweb browser, for example. However, client 200 may be any software,firmware or hardware capable of communicating with server 202. Server202 can be any web server having a Java™ run-time environment andsupport for JSP, such as the BEA WebLogic Server™, available from BEASystems, Inc. of San Jose, Calif.

[0016] JSP's separate GUI functionality executing on a client fromapplication logic executing on a server, thereby enabling users toeasily change a GUI without having to alter underlying applicationlogic. Generally speaking, a JSP includes a page file that containstraditional HTML and Java™, but has a “jsp” file name extension ratherthan “.hml”. The “jsp” extension indicates to server 202 that the filecontains embedded directives to invoke special JSP processing withinserver 202. For example, consider the following JSP page:

[0017] <%@page import=“java.util.*” %>

[0018] <HTML>

[0019] <HEAD>

[0020] <TITLE>JSP Date Example</TITLE>

[0021] </HEAD>

[0022] <CENTER>

[0023] <H2>Today's Date is:</H2>

[0024] <%=new Date( ) %>

[0025] </CENTER>

[0026] </BODY>

[0027] </HTML>

[0028] Embedded in the HTML code above are statements expressly forprocessing by a JSP engine (not shown) in server 202. For example, thescriplet code fragment “new Date ( )” is delimited by the specialsymbols <%= and %>. When the JSP page is invoked by client 200, it willbe processed and executed on server 202 by the JSP engine, whereas theHTML code will be processed and executed on client 200. The abovescriplet creates a new instance of the Date class on server 202 andreturns the current date as a string to client 200, which is thendisplayed by client 200:

[0029] Today's Date is:

[0030] Tues Jul. 05 13:34:33 PDT 2002

[0031] In one embodiment, when client 200 invokes a JSP page, web server202 compiles the page into a servlet and spawns it as a running process.A servlet is a process deployed in a web server. Any dynamic output ofthe servlet is sent back to client 200 as a response. Processing of JSPcode within the web server may also result in the inclusion (andinvocation) of other JSP files via the <jsp:include> or similardirective.

[0032]FIG. 3 is diagram of portal rendering in accordance to oneembodiment of the invention. Each box in the diagram having a file nametherein represents a JSP page. The arrows beneath the boxes representexecution flow from one JSP page to another via JSP include directives.index.jsp 300 is the entry point for the portal web page. It forwardsthe web page request to the main portal JSP page, Portal.jsp 302.Portal.jsp 302 is responsible for rendering the portal and its contents.As such it must acquire various information needed for this endeavor. Inone embodiment, Portal.jsp 302 retrieves such information via calls to aJSP tag library, esp.tld 204. esp.tld 204 includes JSP tags forcommunicating with portal manager 206. Portal manager 206 is responsiblefor retrieving and persisting information pertaining to portal “skins”,portal templates and portlets. In one embodiment, the portal manager canbe implemented as a stateless session Enterprise Java Bean™ (EJB).Persistence manager 208 is responsible for persisting this informationand providing it to portal manager 206. Persistence manager 208 mayutilize a relational database management system (RDMBS) 210.

[0033] In one embodiment, a skin can be a collection of files thatincludes a cascading style sheet and a directory of images that definethe look and feel of a portal. Every button, banner, portlet header,background color, and font characteristic can be determined by the skin.In one embodiment, a portal can be associated with more than one user orportal group. A user group can be any arbitrary collection of users thatis determined statically, or dynamically by evaluating rules that takeinto account information about a user and other information. A portalhas a default skin that can be customized for a group. In this way, agroup can define its own look and feel for a particular portal page. Thegroup skin can be further customized to suit the needs of individualusers. Skin information can be cached in server 202 so that it may beused by other JSP's invoked by Portal.jsp during rendering of the portalpage.

[0034] Another piece of information retrieved by Portaljsp 302 viaesp.tld 204 is a template corresponding to each portal page. As withskins, a template can be customized. In one embodiment, customization ofa template involves the layout or placement of portal elements (e.g.,portlets, static data, dynamic data, header, footer, content, etc.) onthe template. A template can be afforded an arbitrary number of levelsof customization. In another embodiment, a template can have threelevels of customization: global, group and user. An initial template iscreated for a portal page at the global level. This is the defaulttemplate used for describing the portal page if there are no furthercustomizations. Customizations at the group level supersede the globallevel template. Likewise, customizations at the user level takeprecedence over the group and global levels.

[0035] As part of retrieving the template, portal manager 206 bindsportlets to template placeholders. In doing so, portal manager 206utilizes access controller 212 to determine capabilities or permissions(e.g., whether the given portal user is entitled to execute, view oredit the portlet in question) based on one or more entitlements. Anentitlement is a rule that grants or denies access to a resourcecapability. In one embodiment, a resource can be any resource availableon a computer network, including but not limited to a portlet, a portletGUI component, a portal page, portlet content, etc. In one embodiment,evaluation of an entitlement consists of dynamically associating roleswith a user based on role rules that take into account information aboutthe user, information about the user's communication session, or thecurrent state of the system. For example:

[0036] (1) When all of these conditions apply, the user is a GoldMember:

[0037] Checking account balance>$5,000

[0038] Combined account balance >$50,000

[0039] In rule (1) above, a user is deemed a GoldMember if there is morethan $5,000 in their checking account and they have more than $50,000 intheir combined accounts. Certain portlets, for example, may only be forGoldMember users. Thus, if only GoldMember users were entitled toexecute the portlet in question, it would not be bound to a template fornon-GoldMember users. Similarly, if the entitlement was for viewing,rather than execution, the portlet would be bound to the template butonly GoldMember users could view it. If the entitlement was for editing,then the portlet would be bound to the template and would be visible toa user, however only GoldMember users would be allowed to edit theportlet's contents. Access controller 212 directs role mapper 214 todetermine which roles correspond to client 200. Access controller 212then directs decision module 216 to determine whether or not access to aresource should be allowed based on entitlements corresponding to theroles.

[0040] The final piece of information Portal.jsp 302 needs in order torender the portal is the currently selected portal page tab 20-28. Thisdetermines which portal page template to use initially, since eachportal page is described by a template and each tab corresponds to aunique portal page. After obtaining this preliminary information, asshown in FIG. 3, Portal.jsp 302 uses a JSP include directive to invokeheader.jsp 304. header.jsp 304 renders a standard header which is thesame for each page in the portal. The header could be a navigation pane,for example, allowing a user to jump to different areas of the portal.It could also provide a standard graphic design element to unify pageswithin the portal. Next, Portal.jsp 302 invokes PortalPageHeader.jsp306. PortalPageHeader.jsp 306 renders tabs 20-28 based on the number ofportal page templates retrieved. Next, Portal.jsp 302 invokesPortalPageContent.jsp 308 to render the selected portal page. Aplaceholder defines regions of the template wherein a portlet candisplay itself, or wherein other static or dynamic content can berendered. In one embodiment, PortalPageContent.jsp 308 is responsiblefor rendering the page elements corresponding to each placeholder. Ifthe placeholder hosts a portlet, PortalPageContent.jsp 308 invokesPortlet.jsp 310.

[0041]FIG. 4 is diagram of portlet rendering in accordance to oneembodiment of the invention. Portlet.jsp 310 invokes Titlebar.jsp 402which, in turn, renders the portlet's window title bar. The title barmight display icons that, when selected, allow a user to edit theportlet's contents 36, detach the portlet such that it occupies a windowindependent from the web browser's main window 34, or remove the portlet38 (i.e., close its window). Titlebar.jsp 402 can access entitlementinformation via esp.tld 204 in deciding whether or not these icons arepresent or active. Portlet.jsp 310 invokes Banner.jsp 404 to render abanner in a like manner to that of the portal page. Portlet.jsp 310invokes aheader.jsp 406 and afooter.jsp 410 render the header and footerportions of the portlet window. Portlet content generation (e.g., stockquotes, account balances) begins when Portlet.jsp 310 invokesacontent.jsp 408 to initiate portlet execution (e.g., by making a JSPtag library call).

[0042] One embodiment may be implemented using a conventional generalpurpose or a specialized digital computer or microprocessor(s)programmed according to the teachings of the present disclosure, as willbe apparent to those skilled in the computer art. Appropriate softwarecoding can readily be prepared by skilled programmers based on theteachings of the present disclosure, as will be apparent to thoseskilled in the software art. The invention may also be implemented bythe preparation of integrated circuits or by interconnecting anappropriate network of conventional component circuits, as will bereadily apparent to those skilled in the art.

[0043] One embodiment includes a computer program product which is astorage medium (media) having instructions stored thereon/in which canbe used to program a computer to perform any of the features presentedherein. The storage medium can include, but is not limited to, any typeof disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive,and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs,flash memory devices, magnetic or optical cards, nanosystems (includingmolecular memory ICs), or any type of media or device suitable forstoring instructions and/or data.

[0044] Stored on any one of the computer readable medium (media), thepresent invention includes software for controlling both the hardware ofthe general purpose/specialized computer or microprocessor, and forenabling the computer or microprocessor to interact with a human user orother mechanism utilizing the results of the present invention. Suchsoftware may include, but is not limited to, device drivers, operatingsystems, execution environments/containers, and user applications.

[0045] The foregoing description of the preferred embodiments of thepresent invention has been provided for the purposes of illustration anddescription. It is not intended to be exhaustive or to limit theinvention to the precise forms disclosed. Many modifications andvariations will be apparent to the practitioner skilled in the art.Embodiments were chosen and described in order to best describe theprinciples of the invention and its practical application, therebyenabling others skilled in the art to understand the invention, thevarious embodiments and with various modifications that are suited tothe particular use contemplated. It is intended that the scope of theinvention be defined by the following claims and their equivalents.

What is claimed is:
 1. A method for rendering a portal, comprising:rendering a portal containing a portal page with a first Java ServerPage (JSP); rendering the portal page containing a portlet with a secondJSP; rendering the portlet containing a portlet element with a thirdJSP; and rendering the portlet element with a fourth JSP.
 2. The methodof claim 1 wherein: wherein rendering utilizes a skin.
 3. The method ofclaim 2 wherein: the skin can be customized.
 4. The method of claim 1wherein: the portal page is a Hypertext Markup Language (HTML) table. 5.The method of claim 1 to be used by a portal group which contains atleast one user wherein: the portal page is described by a templatewherein the template can be customized by the group and/or by the atleast one user.
 6. The method of claim 5 wherein: a placeholder isassociated with the template.
 7. The method of claim 6 wherein: theportlet is dynamically bound to the placeholder.
 8. The method of claim1 wherein: the portlet has at least one capability which is determinedby evaluation of at least one entitlement.
 9. The method of claim 1wherein: at least one entitlement acts as security for the portlet. 10.The method of claim 1 wherein: access to the portlet is guarded by atleast one entitlement.
 11. The method of claim 1 wherein: rendering theportal includes rendering a header and a footer.
 12. The method of claim1 wherein: rendering the portlet element includes rendering at least oneof a title bar, a banner, a header, a content and a footer.
 13. A methodfor rendering a portal, comprising: rendering a portal containing acustomizable portal page with a first Java Server Page (JSP); renderingthe portal page containing a portlet with a second JSP; rendering theportlet containing a portlet element with a third JSP; rendering theportlet element with a fourth JSP; and wherein the portlet correspondsto a placeholder on the portal page.
 14. The method of claim 13 wherein:wherein rendering utilizes a skin.
 15. The method of claim 14 wherein:the skin can be customized.
 16. The method of claim 13 wherein: theportal page is a Hypertext Markup Language (HTML) table.
 17. The methodof claim 13 to be used by a portal group which contains at least oneuser wherein: the portal page is described by a template wherein thetemplate can be customized by the group and/or by the at least one user.18. The method of claim 17 wherein: the placeholder is associated withthe template.
 19. The method of claim 13 wherein: the portlet isdynamically bound to the placeholder.
 20. The method of claim 13wherein: the portlet has at least one capability which is determined byevaluation of at least one entitlement.
 21. The method of claim 13wherein: at least one entitlement acts as security for the portlet. 22.The method of claim 13 wherein: access to the portlet is guarded by atleast one entitlement.
 23. The method of claim 13 wherein: rendering theportal includes rendering a header and a footer.
 24. The method of claim13 wherein: rendering the portlet element includes rendering at leastone of a title bar, a banner, a header, a content and a footer.
 25. Amethod for rendering a portal, comprising: spawning a first process torender a portal containing a portal page; spawning a second process torender the portal page containing a portlet; spawning a third process torender the portlet containing a portlet element; and spawning a fourthprocess to render the portlet element.
 26. The method of claim 25wherein: wherein rendering utilizes a skin.
 27. The method of claim 26wherein: the skin can be customized.
 28. The method of claim 25 wherein:the portal page is a Hypertext Markup Language (HTML) table.
 29. Themethod of claim 25 to be used by a portal group which contains at leastone user wherein: the portal page is described by a template wherein thetemplate can be customized by the group and/or by the at least one user.30. The method of claim 29 wherein: a placeholder is associated with thetemplate.
 31. The method of claim 30 wherein: the portlet is dynamicallybound to the placeholder.
 32. The method of claim 25 wherein: theportlet has at least one capability which is determined by evaluation ofat least one entitlement.
 33. The method of claim 25 wherein: at leastone entitlement acts as security for the portlet.
 34. The method ofclaim 25 wherein: access to the portlet is guarded by at least oneentitlement.
 35. The method of claim 25 wherein: rendering the portalincludes rendering a header and a footer.
 36. The method of claim 25wherein: rendering the portlet element includes rendering at least oneof a title bar, a banner, a header, a content, and a footer.
 37. Themethod of claim 25 wherein: a process is a servlet.
 38. A machinereadable medium having instructions stored thereon that when executed bya processor cause a system to: render a portal containing a portal pagewith a first Java Server Page (JSP); render the portal page containing aportlet with a second JSP; render the portlet containing a portletelement with a third JSP; and render the portlet element with a fourthJSP.
 39. The machine readable medium of claim 38 wherein: whereinrendering utilizes a skin.
 40. The machine readable medium of claim 39wherein: the skin can be customized.
 41. The machine readable medium ofclaim 38 wherein: the portal page is a Hypertext Markup Language (HTML)table.
 42. The method of claim 38 to be used by a portal group whichcontains at least one user wherein: the portal page is described by atemplate wherein the template can be customized by the group and/or bythe at least one user.
 43. The machine readable medium of claim 42wherein: a placeholder is associated with the template.
 44. The machinereadable medium of claim 43 wherein: the portlet is dynamically bound tothe placeholder.
 45. The machine readable medium of claim 38 wherein:the portlet has at least one capability which is determined byevaluation of at least one entitlement.
 46. The method of claim 38wherein: at least one entitlement acts as security for the portlet. 47.The method of claim 38 wherein: access to the portlet is guarded by atleast one entitlement.
 48. The machine readable medium of claim 38wherein: rendering the portal includes rendering a header and a footer.49. The machine readable medium of claim 38 wherein: rendering theportlet element includes rendering at least one of a title bar, abanner, a header, a content and a footer.
 50. A system for rendering aportal and adapted to communicate with a client, comprising: a server toperform a hierarchy of rendering processes in response to communicationfrom the client; and wherein the server can evaluate at least oneentitlement to determine a permission associated with an element to berendered.
 51. The system of claim 50 wherein: the server can evaluate atleast one entitlement which associates a role with a user based on arole rule.
 52. The system of claim 50 wherein: a rendering process canbe a servlet.
 53. The system of claim 50 wherein: the servercommunicates to the client a portal skin and a portal page template. 54.The system of claim 53 wherein: the portal page template can becustomized for a group and/or by at least one user belonging to thegroup.
 55. The system of claim 53 wherein: the server selectively bindsat least one portlet to the template.
 56. The system of claim 55wherein: binding is based on the evaluation of the at least oneentitlement.
 57. The system of claim 50, further comprising: a portalmanager, adapted to communicate to the client a portal skin and a portalpage template.
 58. The system of claim 50, further comprising: an accesscontroller that can provide access to resources based on evaluation theat least one entitlement.
 59. The system of claim 50 wherein: thehierarchy is determined by the client.
 60. The system of claim 50wherein: the element includes at least one of a portlet element and aportlet.
 61. The system of claim 50 wherein: the permission is whether auser is entitled to any one or more of execute, view or edit a portlet.62. A method for rendering a portlet, comprising: rendering a portletwherein at least one entitlement acts as security for the portlet. 63.The method of claim 62 wherein: rendering utilizes a skin.
 64. Themethod of claim 63 wherein: the skin can be customized.
 65. The methodof claim 62 wherein: the portlet is dynamically bound to a placeholderfor a portal page based on evaluation of the at least one entitlement.66. The method of claim 62 wherein: the portlet has at least onecapability which is determined by evaluation of at least oneentitlement.
 67. The method of claim 66 wherein: the capability is atleast one of execute, view and edit.
 68. The method of claim 62 wherein:rendering includes invoking at least one Java Server Page.
 69. Themethod of claim 62 wherein: rendering includes rendering at least one ofa title bar, a banner, a header, a content and a footer.